//
// Created by Administrator on 2025/6/23.
//
#include <map>
#include <string>
#include <iostream>

#ifndef CTEST_TEST5_H
#define CTEST_TEST5_H

static int Test5v = 10086;

namespace Ns5 {


    void test6Foo(int a, ...);

    std::string *foo5(std::string *a, int f);

    constexpr int foo1(int a);

    int foo2();

    int test6Foo1(int *a, std::string c);

    int *test6Foo2();

    struct Test5Struct1 {
        int a;
        std::string b;
    public:
        std::string foo() const {
            return b;
        }

//    const修饰的方法不能修改成员
//    void foo2() const {
//        a += 1;
//    }
    };

    void test();

    constexpr int foo3(int a);

    template<typename T>
    concept is_child = std::is_integral_v<T>;

    template<is_child V>
    void testTemplate(V t) {
        auto a = is_child<V>;
        std::cout << a;
    }

    void main2();

    void main3();

    class Test5C1 {

    private :
        int a;
        std::string *c;

    public:
        Test5C1(int aa, const char *c) : a(aa), c(new std::string(c)) {}
    };

    typedef struct Test5Struct2 : Test5Struct1 {
        int a;
        std::string c;
    } T55S2;

    struct Test6Struct3 {
        int a;
        std::string *c;
    };
}


#endif //CTEST_TEST5_H
